﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.ModelBinding;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Practices.Unity;
using PharmacyBussinesEntities;
using PharmacyService;

namespace PharmacyWeb.Almacen
{
    public partial class frmProducto : System.Web.UI.Page
    {
        [Dependency]
        public IProductoService ProductoService { get; set; }

        [Dependency]
        public ICategoriaService CategoriaService { get; set; }

        [Dependency]
        public IPresentacionService PresentacionService { get; set; }

        [Dependency]
        public IUnidadMedidaService UnidadMedidaService { get; set; }

        [Dependency]
        public ILaboratorioService LaboratorioService { get; set; }

        [Dependency]
        public IProveedorService ProveedorService { get; set; }

        [Dependency]
        public ILoteService LoteService { get; set; }


        protected void Page_Load(object sender, EventArgs e)
        {
            var accion = Request.QueryString["accion"];
            var idProducto = Request.QueryString["id"];

            if (accion != null && accion=="nuevo")
            {
                fvProducto.DefaultMode = FormViewMode.Insert;
            }
            else if (accion != null && accion == "eliminar" && idProducto != null)
            {
                var id = Int32.Parse(idProducto.ToString());

                ProductoService.RemoveProducto(id);
                Response.Redirect("frmListProductos.aspx");
            }
            
        }

        public Producto GetProducto([QueryString("id")] Int32? id)
        {
            Producto producto = null;

            if (id.HasValue)
                producto = ProductoService.GetFromProductoById(id.Value);
            return producto;
        }

        public void UpdateProducto(Producto producto)
        {
            if (ModelState.IsValid)
            {
                ProductoService.UpdateProducto(producto);
                Response.Redirect("frmListProductos.aspx");
            }
        }

        public void InsertProducto(Producto producto)
        {
            producto.Id = 0;
            if (ModelState.IsValid)
            {
                ProductoService.AddProducto(producto);
                Response.Redirect("frmListProductos.aspx");
            }
        }

        public IEnumerable<Categoria> GetCategorias()
        {
            return CategoriaService.GetCategorias();
        }

        public IEnumerable<Presentacion> GetPresentacion()
        {
            return PresentacionService.GetAllFromPresentaciones();
        }

        public IEnumerable<Proveedor> GetProveedor()
        {
            return ProveedorService.GetAllFromProveedor();
        }

        public IEnumerable<UnidadMedida> GetUnidadMedidas()
        {
            return UnidadMedidaService.GetAllFromUnidadMedidas();
        }

        public IEnumerable<Lote> GetLotes()
        {
            return LoteService.GetAllFromLotes();
        }

        public IEnumerable<Laboratorio> GetLaboratorios()
        {
            return LaboratorioService.GetAllFromLaboratorios();
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {

        }
    }
}